51單片機是對所有兼容Intel 8031指令系統(tǒng)的單片機的統(tǒng)稱。該系列單片機的始祖是Intel的8004單片機,后來隨著Flash rom技術(shù)的發(fā)展,8004單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用于工業(yè)測控系統(tǒng)之中。很多公司都有51系列的兼容機型推出,今后很長的一段時間內(nèi)將占有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。需要注意的是51系列的單片機一般不具備自編程能力。
常見51單片機產(chǎn)品
*Intel(英特爾)的:80C31、80C51、87C51,80C32、80C52、87C52等;
*ATMEL(艾德梅爾)的:89C51、89C52、89C2051,89S51(RC),89S52(RC)等;
*Philips(飛利浦)、華邦、Dallas(達拉斯)、Siemens(西門子)等公司的許多產(chǎn)品;
STC(國產(chǎn)宏晶)單片機:89c51、89c52、89c516、90c516等眾多品牌。
51單片機功能
·8位CPU·4kbytes程序存儲器(ROM) (52為8K)
·128bytes的數(shù)據(jù)存儲器(RAM) (52有256bytes的RAM)
·32條I/O口線·111條指令,大部分為單字節(jié)指令
·21個專用寄存器
·2個可編程定時/計數(shù)器·5個中斷源,2個優(yōu)先級(52有6個)
·一個全雙工串行通信口
·外部數(shù)據(jù)存儲器尋址空間為64kB
·外部程序存儲器尋址空間為64kB
·邏輯操作位尋址功能·雙列直插40PinDIP封裝
·單一+5V電源供電
CPU:由運算和控制邏輯組成,同時還包括中斷系統(tǒng)和部分外部特殊功能寄存器;
RAM:用以存放可以讀寫的數(shù)據(jù),如運算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù);
ROM:用以存放程序、一些原始數(shù)據(jù)和表格;
I/O口:四個8位并行I/O口,既可用作輸入,也可用作輸出
T/C:兩個定時/記數(shù)器,既可以工作在定時模式,也可以工作在記數(shù)模式;
五個中斷源的中斷控制系統(tǒng);
一個全雙工UART(通用異步接收發(fā)送器)的串行I/O口,用于實現(xiàn)單片機之間或單片機與微機之間的串行通信;
片內(nèi)振蕩器和時鐘產(chǎn)生電路,石英晶體和微調(diào)電容需要外接。最佳振蕩頻率為6M—12M。
51單片機學習
作為一個初學者,如何單片機入門?
實際上,其實不需要多少東西,會簡單的C語言,知道51單片機的基本結(jié)構(gòu)就可以了。一般的大學畢業(yè)生都可以了,自學過這2門課程的高中生也夠條件。設備上,一般是建議購買一個仿真器,例如,的“雙功能下載線”就具有良好的穩(wěn)定性和較快的下載速度,上位機可擴展,可以下載更多的單片機及嵌入式芯片。通過實驗,這樣才可以進行實際的,全面的學習。日后在工作上,仿真器也大有用處。還有,一般光有仿真器是不行,還得有一個實際的電路,即學習板,如圖,即為,單片機最小系統(tǒng)。
學習板以強大的接口為主,單片機的學習分兩方面,一方面是單片機的原理及內(nèi)部結(jié)構(gòu),另一方面是單片機的接口技術(shù)。這些都是需要平時多積累,多動手,多思考,這樣才能學好單片機技術(shù)。
注:“雙功能下載線”在百度文庫里有詳細的使用說明,并且上位機會定期更新以支持更多的單片機。
單片機學習的4個階段
一、整體了解
要知道 單片機是什么?單片機有何用?如何系統(tǒng)學習單片機?單片機系統(tǒng)設計的流程是怎樣的,需要掌握哪些輔助軟件?
了解這些之后,我們的學習就有了目標和方向。
二、揭秘 單片機很難學,是因為其內(nèi)部結(jié)構(gòu)、編程語言抽象,且實際應用中與其他電子技術(shù)和元器件知識相互關(guān)聯(lián),需結(jié)合起來一起設計開發(fā)產(chǎn)品。所以,第二階段要了解單片機的內(nèi)部結(jié)構(gòu)是怎樣的?單片機開發(fā)經(jīng)常會用到哪些電子技術(shù)和元器件知識?如何將一條條編程指令組合成一段段有效的程序?
三、解密 之所以單片機能成為控制核心,設計出包羅萬象的應用系統(tǒng)來,是因為開發(fā)者利用了單片機提供的種種功能及各種外設。所以,第三階段我們要掌握單片機的各種功能,再加上諸如傳感器、模數(shù)轉(zhuǎn)換、掃描顯示、串行、中斷的應用思維,結(jié)合更多的元器件、電子電路知識,逐個學習、體會實際的單片機系統(tǒng)的秘密。
四、遠航 通過以上三個階段,讀者基本就可掌握單片機的應用了。但要設計出豐富的單片機系統(tǒng),解決復雜的實際問題,還需要了解更多的外設知識及其與單片機的聯(lián)系(如電動機、各類
存儲器、繼電器、紅外管等)。這些需要不斷的學習和積累。有時候,接到一些開發(fā)任務,就需要你針對這個任務自覺地去搜集、學習相關(guān)知識,在實踐中不斷學習和提高。
最后推薦幾本經(jīng)典圖書:
《實例解讀51單片機完全學習與應用(配教學視頻)》,楊欣編著(他寫過多本很有口碑的電子讀物,風格獨特),電子工業(yè)出版社出版。
《愛上單片機》,杜洋著,全新風格,使用面包板入門,人民郵電出版社。
《手把手教你學51單片機》,宋雪松編著(很經(jīng)典),清華大學出版社出版。
51單片機仿真
電腦仿真
Proteus 自從有了單片機也就有了開發(fā)系統(tǒng),隨著單片機的發(fā)展開發(fā)系統(tǒng)也在不斷發(fā)展。 keil是一種先進的單片機集成開發(fā)系統(tǒng)。它代表著匯編語言單片機開發(fā)系統(tǒng)的最新發(fā)展,首創(chuàng)多項便利技術(shù),將開發(fā)的編程/仿真/調(diào)試/寫入/加密等所有過程一氣呵成,中間不須任何編譯或匯編。
功能特性
1,可以仿真63K程序空間,接近64K 的16位地址空間;
2,可以仿真64Kxdata 空間,全部64K 的16位地址空間;
3,可以真實仿真全部32 條IO腳;
4,完全兼容keilC51 UV2 調(diào)試環(huán)境,可以通過UV2 環(huán)境進行單步,斷點, 全速等操作;
5,可以使用C51語言或者ASM匯編語言進行調(diào)試 ;
6,可以非常方便地進行所有變量觀察,包括鼠標取值觀察,即鼠標放在某 變量上就會立即顯示出它此的值;
7,可選 使用用戶晶振,支持0-40MHZ晶振頻率;
8,片上帶有768字節(jié)的xdata,您可以在仿真時選 使用他們,進行xdata 的仿真;
9,可以仿真雙DPTR 指針;
10,可以仿真去除ALE 信號輸出. ;
11,自適應300-38400bps 的所有波特率通訊;
12,體積非常細小,非常方便插入到用戶板中.插入時緊貼用戶板,沒有連接電纜,這樣可以有效地減少運行中的干擾,避免仿真時出現(xiàn)莫名其妙的故障;
13,仿真插針采用優(yōu)質(zhì)鍍金插針,可以有效地防止日久生銹,選擇優(yōu)質(zhì)園腳IC插座,保護仿真插針,同時不會損壞目標板上的插座. ;
14,仿真時監(jiān)控和用戶代碼分離,不可能產(chǎn)生不能仿真的軟故障;
15,RS-232接口不計成本采用MAX202集成電路,串行通訊穩(wěn)定可靠,絕非一般三極管的簡易電路可比。
功能限制
仿真器占用單片機串口及定時器2,與Keil C(PC)通訊,故不支持串口及定時器2 的仿真功能。全速運行時單片機串口及定時器2 可供用戶使用。
使用方法
1.將仿真器插入需仿真的用戶板的CPU插座中,仿真器由用戶板供電;
2.將仿真器的串行電纜和PC機接好,打開用戶板電源;
3.通過Keil C 的IDE 開發(fā)仿真環(huán)境UV2 下載用戶程序進行仿真、調(diào)試。
硬件說明
1、使用用戶板的晶振:仿真器晶振旁有兩組跳線用來切換內(nèi)部晶振和用戶板晶振,當兩個短路塊位于仿真器晶振一側(cè)時,默認使用仿真板上的晶振(11.0592MHz), 當兩個短路塊位于電容一側(cè)時,使用用戶板的晶振。
2、為便于調(diào)試帶看門狗的用戶板,仿真器的復位端未與用戶板復位端相連;故仿真器的復位按鈕只復位仿真器,不復位用戶板;若要復位用戶板,請使用用戶板復位按鈕。
51單片機區(qū)別
同樣的一段程序,在各個單片機廠家的硬件上運行的結(jié)果都是一樣的,如ATMEL的89C51(已經(jīng)停產(chǎn))、89S51, PHILIPS,和WINBOND等,我們常說的已經(jīng)停產(chǎn)的89C51指的是ATMEL公司的 AT89C51單片機,同時是在原基礎上增強了許多特性,如時鐘,更優(yōu)秀的是由Flash(程序存儲器的內(nèi)容至少可以改寫1000次)存儲器取代了原來的ROM(一次性寫入),AT89C51的性能相對于8051已經(jīng)算是非常優(yōu)越的了。
不過在市場化方面,89C51受到了PIC單片機陣營的挑戰(zhàn),89C51最致命的缺陷在于不支持ISP(在線更新程序)功能,必須加上ISP功能等新功能才能更好延續(xù)MCS-51的傳奇。89S51就是在這樣的背景下取代89C51的,89S51已經(jīng)成為了實際應用市場上新的寵兒,作為市場占有率第一的Atmel公司已經(jīng)停產(chǎn)AT89C51,將用AT89S51代替。89S51在工藝上進行了改進,89S51采用0.35新工藝,成本降低,而且將功能提升,增加了競爭力。89SXX可以向下兼容89CXX等51系列芯片。同時,Atmel不再接受89CXX的定單,大家在市場上見到的89C51實際都是Atmel前期生產(chǎn)的巨量庫存而以。如果市場需要,Atmel當然也可以再恢復生產(chǎn)AT89C51。
89S51相對于89C51增加的新功能包括:
-- 新增加很多功能,性能有了較大提升,價格基本不變,甚至比89C51更低!
-- ISP在線編程功能,這個功能的優(yōu)勢在于改寫單片機存儲器內(nèi)的程序不需要把芯片從工作環(huán)境中剝離。是一個強大易用的功能。
-- 最高工作頻率為33MHz,大家都知道89C51的極限工作頻率是24M,就是說S51具有更高工作頻率,從而具有了更快的計算速度。
-- 具有雙工UART串行通道。
-- 內(nèi)部集成看門狗計時器,不再需要像89C51那樣外接看門狗計時器單元電路。
-- 雙數(shù)據(jù)指示器。
-- 電源關(guān)閉標識。
-- 全新的加密算法,這使得對于89S51的盜版變?yōu)椴豢赡埽绦虻谋C苄源蟠蠹訌?,這樣就可以有效的保護知識產(chǎn)權(quán)不被侵犯。
-- 兼容性方面:向下完全兼容51全部字系列產(chǎn)品。比如8051、89C51等等早期MCS-51兼容產(chǎn)品。也就是說所有教科書、網(wǎng)絡教程上的程序(不論教科書上采用的單片機是8051還是89C51還是MCS-51等等),在89S51上一樣可以照常運行,這就是所謂的向下兼容。
比較結(jié)果:就如同INTEL的P3向P4升級一樣,雖然都可以跑Windows98,不過速度是不同的。從AT89C51升級到AT89S51 ,也是同理。和S51比起來,C51就要遜色一些,實際應用市場方面技術(shù)的進步是永遠向前的。
51單片機誤區(qū)
誤區(qū)1:51單片機是學習的基礎
“51單片機是學習的基礎”這句話本身并沒有錯。在我讀本科的時候,當時它無疑是學習的基礎——畢竟那時沒有更高級的單片機可以供使用,國內(nèi)更沒有更高級的教材供參考,老師的水平也是參差不齊,而51單片機正符合這樣的需求,不僅有大量的成型的教材,廣泛的示例,當時工作的實際項目也是51單片機為主,于是51單片機理所當然的成為當時的學習基礎。要知道筆者讀本科的時候是2004年,即10年前的東西。按照莫爾定律,電子行業(yè)每18個月更新?lián)Q代,10年前的技術(shù)現(xiàn)在已經(jīng)更新了6代了——事實也確實如此。
目前32位Crtex-M系列單片機的各種教程已經(jīng)普及,其學習的難度不斷降低。以意法半導體公司的STM32F系列單片機來說,意法半導體在推廣產(chǎn)品初期大量贈送了核心板。免費贈送的核心板不僅有流行的32位Cortex-M系列微處理器,更在板上集成在線調(diào)試器。隨機附贈的光盤或者鏈接更是提供了大量的示例源代碼。我們只需要安裝開發(fā)環(huán)境即可直接編譯與下載調(diào)試。這時,如果再說51單片機是學習嵌入式的基礎肯定是不合時宜了。
誤區(qū)2:51單片機可以學習寄存器的操作
51單片機可以學習寄存器的操作,這一點兒是不容置疑的。我們分析一下其更深層的原因。在MSC-51單片機的編程環(huán)境中,最初是以匯編語言為主要編程語言。要知道匯編語言就是直接操作寄存器的,匯編語言是無法做到C語言的函數(shù)調(diào)用與封裝的。如果說51單片機是以操作寄存器為優(yōu)點,我覺得更應該說51單片機操作寄存器是一種無奈,是只有一個選項的選擇題。
我們現(xiàn)在的Cortex-M系列單片機就無法學習寄存器了嗎?顯然不是。在硬件設計中,硬件的操作方式就是寄存器的操作,但是其實現(xiàn)卻是可以不同。各微處理器提供的C語言庫函數(shù)包其實質(zhì)就是將操作寄存器的指令進行了C語言環(huán)境下的封裝。我們這里用ST官方庫函數(shù)舉一個示例:
void USART_Init (USART1, *USART_InitStruct);//實現(xiàn)串口1的初始化,簡單明了,無需注釋
筆者在這里也想舉一個示例來說明寄存器操作的步驟,但是操作寄存器實在是太復雜了,筆者不想去浪費時間去整理了。
通俗易懂的C語言,方便移植的C語言與硬件平臺相對應的編譯器聯(lián)合,就能完成硬件的操作。有了簡單、方便的方式,我們?yōu)槭裁催€要考慮繁瑣,復雜的匯編語言與寄存器操作呢?
誤區(qū)3:51單片機的成本低
成本都是左右應用的主要因素。項目的立項主要考慮成本,銷售的定價主要成本。低成本的方案才會在市場里占有優(yōu)勢。可是,51單片機真就是最低成本了嗎?非也?,F(xiàn)在按照功能劃分,部分Cortex-m0系列的32位單片機的成本也能做3元人民幣。其性能已經(jīng)是51單片機的好幾倍了,而且更容易開發(fā)與維護。
還有另外一個成本:開發(fā)難度成本。51單片機不支持在線調(diào)試,有一些問題在編程初期沒有發(fā)現(xiàn),只有與硬件連接后才會顯現(xiàn)出現(xiàn)來,例如控制操作中經(jīng)常用到的延時。這時在線調(diào)試的巨大優(yōu)勢就體現(xiàn)出來了,它可以極其方便的查看微處理器當時的狀態(tài),使得問題的分析變得簡單而透明。從而,有效降低開發(fā)的難度,縮短開發(fā)周期,節(jié)約開發(fā)資金。
誤區(qū)4:51單片機入門簡單
51單片機入門簡單?我對于這個觀點持保留意見。想要入門51單片機,我不僅熟悉該款單片機外設,而且還要充分了解寄存器的某位的意義。對于時鐘,定時器的配置必須了如指掌。這樣無疑會增大我的學習難度與熟悉的周期。如果我們使用32位單片機的庫函數(shù)模式,我們只需要具備C語言的知識,了解API函數(shù),直接看已經(jīng)注釋過的寄存器意思即可,不需要了解其底層的硬件實現(xiàn),更不需要了解某個寄存器某個指定位的意義了。這樣,減少了我的工作量,從而降低了開發(fā)難度。你說是51單片機入門簡單,還是32位Cortex內(nèi)核微處理器簡單?
嵌入式系統(tǒng)的學習是非??菰锒钟刑魬?zhàn)性的事情。由于與實際的硬件直接連接,不僅要考慮編寫的正確性,而且還要考慮硬件的可靠性。這時,簡單、高效的軟件編寫就變向的降低我們開發(fā)難度與風險。51單片機已經(jīng)是明日黃花,向前看才是發(fā)展。是時候向51單片機說再見了!